package br.com.senac.digipao.servlet;

import br.com.senac.digipao.bean.Usuario;
import br.com.senac.digipao.dao.UsuarioDao;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "pesquisaUsuarioServlet", urlPatterns = {"/pesquisaUsuarioServlet"})
public class PesquisaUsuarioServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        String operacao = request.getParameter("operacao");

        if (operacao.equals("Pesquisar")) {
            // pegando os parâmetros do request
            //String parametro = request.getParameter("pesquisa");      
            String parametro = request.getParameter("pesquisaUsuario");
            try {
                UsuarioDao dao = new UsuarioDao();
                List<Usuario> listaUsuario = dao.listaUsuariosPorParametros(parametro);

                if (listaUsuario.size() > 0) {
                    request.getSession().setAttribute("ListaUsuario", listaUsuario);
                }

                RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/resultadoPesquisaUsuario.jsp");
                rd.forward(request, response);

            } catch (SQLException ex) {
                Logger.getLogger(PesquisaUsuarioServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        else if (operacao.equals("Alterar")) {
            //recupera valor do idUsuario do radio button selecionado
            int idUsuario = Integer.parseInt(request.getParameter("select"));
            //recupera lista de usuários da sessão
            List<Usuario> listaUsuario = (List<Usuario>) request.getSession(true).getAttribute("ListaUsuario");
            
            //verifica se lista foi recuperada da sessão
            if (listaUsuario != null && listaUsuario.size() > 0 ) {
            //procura na lista qual foi o usuario selecionado e quando encontra, salva na sessão como "UsuarioParaAlterar"
                for (int i = 0 ; i <= listaUsuario.size() ; i++)  {
                    if (listaUsuario.get(i).getIdUsuario() == idUsuario) {
                        request.getSession().setAttribute("UsuarioParaAlterar", listaUsuario.get(i));
                        break;
                   }
                }
            
            } else {
                try {
                    //se não foi encontrada a lista, busca usuário do banco
                    UsuarioDao dao = new UsuarioDao();   
                    request.getSession().setAttribute("UsuarioParaAlterar", dao.buscaUsuarioPorId(idUsuario));
                } catch (SQLException ex) {
                    Logger.getLogger(PesquisaUsuarioServlet.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            
            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/alteraCadastroUsuario.jsp");
            rd.forward(request, response);
         }

        else if (operacao.equals("Deletar")) {
     
            try {
                UsuarioDao  dao = new UsuarioDao();
                dao.excluiUsuarioPorId(Integer.parseInt(request.getParameter("select")));
            } catch (SQLException ex) {
                Logger.getLogger(PesquisaUsuarioServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            request.getSession().removeAttribute("ListaUsuario");

            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/excluidoComSucesso.jsp");
            rd.forward(request, response);

        }
        
        else if (operacao.equals("PesquisarNovamente")) {
            
            request.getSession().removeAttribute("ListaUsuario");
            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/pesquisaUsuario.jsp");
            rd.forward(request, response);
            
        }
        else {
            request.getSession().removeAttribute("UsuarioParaAlterar");
            request.getSession().removeAttribute("ListaUsuario");
            RequestDispatcher rd = request.getRequestDispatcher("/media/jsp/menuPrincipal.jsp");
            rd.forward(request, response);
        }
    }
}
